Perspectieven#
Show code cell source
import pandas as pd
import plotly.express as px
import plotly.graph_objs as go
import numpy as np
import plotly.io as pio
df = pd.read_csv('merged.csv')
for column in df[['renewable','GDP_per_capita', 'CO2_per_capita', 'basic_water', 'infant_mort','adult_mortality', 'life_expect']]:
if not df[str(column)].apply(lambda x: isinstance(x, str)).any():
if -1 in df[column].values: # Check if -1 is present in the column
df = df[df[column] != -1] # Filter rows where column value is not -1
Perspectief 1#
Uit ‘Health in the world compared to CO2 emissions’ zien we dat landen die veel CO2 per capita uitstoten een hogere levensverwachting hebben. In de grafiek kan je dit zien doordat landen die een hogere CO2 per capita hebben (donkere lijnen) vaker een hogere levensverwachting hebben. Verder zien we hierin ook terug dat de adult mortality en infant mortality lager zijn. Dit betekent dat een land gezonder is omdat de mensen langer leven.
Ook in de toegang tot water zien we verschillen. In ‘basic water percentage in countries per CO2 emissions in the world’ zien we dat landen die meer CO2 uitstoten, meer toegang tot water hebben. Dit zal een positieve invloed hebben op de gezondheid van mensen, omdat schoon drinkwater essentieel is.
Deze verschillen zouden we kunnen verklaren met de ‘Wealth in countries per CO2 emissions’ omdat rijkere landen vaak meer CO2 uitstoten en dus een betere gezondheidszorg kunnen hebben.
Show code cell source
# Create the cartogram using Plotly Graph Objects
fig = go.Figure()
skew = 1.7
colors = px.colors.sequential.tempo
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]
# Add the choropleth trace for colored countries
fig.add_trace(go.Choropleth(
locations=df['country_code'],
z=df['CO2_per_capita'],
geo='geo',
colorscale=colorscale,
hovertext=[f'{country}<br>CO2 per capita: {CO2_per_capita:.2f}<br>Basic Water: {basic_water:.2f}' for country, CO2_per_capita, basic_water in zip(df['country'], df['CO2_per_capita'], df['basic_water'])],
colorbar=dict(
title='CO2 per capita (ton)', # Add a title to the color scale
titleside='top',
tickfont=dict(size=10),
)
))
# Add the scatter trace for black circles representing CO2 per capita
fig.add_trace(go.Scattergeo(
locations=df['country_code'],
marker=dict(
size=(100 - df['basic_water'])*0.3,
sizemode='diameter',
color='#800000',
opacity=0.5
),
hovertext=[f'{country}<br>CO2 per capita: {CO2_per_capita:.2f}<br>Basic Water: {basic_water:.2f}' for country, CO2_per_capita, basic_water in zip(df['country'], df['CO2_per_capita'], df['basic_water'])],
showlegend=True,
name='Geen toegang tot schoon water (%)', # Add a title to the legend
))
# Set the layout and title
fig.update_layout(
title='CO2 uitstoot en toegang tot schoon drinkwater (wereld)',
width=780,
geo=dict(
showframe=False,
showcoastlines=True,
projection_type='natural earth'
),
legend=dict(
tracegroupgap=10, # Increase the gap between legend groups
x=0, # Set the x-coordinate of the legend
y=-0.1, # Set the y-coordinate of the legend
itemsizing = 'constant'
)
)
# Show the plot
fig.show()
Figuur 1 (CO2 uitstoot en toegang tot schoon drinkwater (wereld))#
In deze grafiek zie je een wereldkaart met meerdere variabelen. De kleur laat zien hoeveel CO2 per inwoner een land uitstoot en de grootte van de bubbels laat het percentage van inwoners zien dat geen toegang heeft tot schoon drinkwater. Als je hovert over een land, zie je ook de waardes die bij het land horen.
In deze kaart zien we dat over het algemeen landen die weinig CO2 uitstoten, minder toegang hebben tot drinkwater. Schoon drinkwater vinden wij een belangrijke metriek voor gezondheid en dit ondersteunt daarom het perspectief.
Show code cell source
# Calculate correlation matrix
correlation_matrix = df[['CO2_per_capita','basic_water','hepatitis', 'polio','measles','GDP_per_capita']].corr(method='pearson')
fig = go.Figure(data=go.Bar(
x=correlation_matrix.columns[correlation_matrix.columns != 'CO2_per_capita'],
y=correlation_matrix['CO2_per_capita'][correlation_matrix.columns != 'CO2_per_capita'],
marker_color='teal'
))
# Customize the chart layout
fig.update_layout(
title='Pearson’s r correlaties met CO2 per inwoner (wereld)',
xaxis_tickangle=-45,
width=780,
yaxis=dict(
title="Pearson's r",
zeroline=False,
gridcolor='lightgray',
range=[0, 1],
),
plot_bgcolor='white',
)
bin_labels = ['Basic Water', 'Hepatitis', 'Polio', 'Measles', 'GDP per capita']
fig.update_layout(xaxis=dict(tickmode='array', tickvals=[0, 1, 2, 3, 4], ticktext=bin_labels))
# Show the chart
fig.show(renderer=pio.renderers.default)
Figuur 2 (Pearson’s r correlaties met CO2 per inwoner (wereld))#
In deze grafiek zie je de correlaties tussen CO2 per inwoner, toegang tot schoon drinkwater, het percentage inwoners dat verschillende vaccins heeft ontvangen en het GDP per inwoner op wereldwijde schaal.
In deze grafiek zien we dat landen met een hogere CO2 per capita meer toegang tot schoon water hebben, ook hebben deze landen meer gevaccineerde mensen. Dit vinden wij belangrijke metrieken voor gezondheid. We hebben er ook voor gekozen om de correlatie met GDP te berekenen. Dit gebruiken we als verklaring voor waarom deze landen meer toegang hebben tot deze hulpmiddelen en het helpt met het onderbouwen van ons perspectief.
Show code cell source
data = df[['CO2_per_capita', 'life_expect','adult_mortality','infant_mort']]
column_ranges = [(data[column].min(), data[column].max()) for column in data.columns]
skew = 1.85
colors = px.colors.sequential.Mint
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]
fig = go.Figure(data=go.Parcoords(
line=dict(color=df['CO2_per_capita'], colorscale=colorscale, showscale=True),
dimensions=list([
dict(label='Levensverwachting (Leeftijd)', values=df['life_expect'], range=column_ranges[1]),
dict(label='CO2 per Capita (Tons)', values=df['CO2_per_capita'], range=column_ranges[0]),
dict(label='volwassen sterfte (% Doden tussen 15-60)', values=df['adult_mortality'], range=column_ranges[2]),
dict(label='Kindersterfte (Sterftecijfer)', values=df['infant_mort'], range=column_ranges[3])
])
))
fig.update_layout(
title='Gezondheid vergeleken met CO2-uitstoot (wereld)',
width=780,
)
fig.show()
Figuur 3 (Gezondheid vergeleken met CO2-uitstoot (wereld))#
In deze grafiek zie je de levensverwachting, volwassen sterfte, babysterfte en de CO2-uitstoot per inwoner in een parallel coordinates plot. Hierin kan je van elk van deze variabelen zien hoe ze met elkaar gelinkt zijn. De kleur in de grafiek staat voor de CO2 per inwoner, waarbij donkere lijnen meer CO2 betekenen. Elk lijn staat voor een land. Uit de grafiek zie je dat landen met een hoge CO2-uitstoot een hogere levensverwachting hebben en een lagere sterfte. Hogere levensverwachting is een belangrijk metriek voor gezondheid dus voegt veel toe aan ons perspectief.
Perspectief 2#
Uit ‘Life expectancy in countries with renewable electricity’ zien we dat landen in Europa die een groter deel van hun elektriciteit duurzaam opwekken een hogere levensverwachting hebben. Aan de trendlijn is namelijk te zien dat deze variabelen een positieve correlatie hebben. Mensen die langer leven, zijn over het algemeen gezonder, dus we kunnen zeggen dat mensen in Europese landen die meer van hun elektriciteit duurzaam opwekken, gezonder zijn.
Een verklaring hiervoor is dat Europese landen die een groter deel van hun elektriciteit opwekken van duurzame bronnen, dit over het algemeen doen doordat ze hun negatieve impact op het klimaat proberen te verkleinen. Dit zijn voornamelijk landen die welvarend genoeg zijn om zich hierom zorgen te maken. Dit betekent dat de mensen hier gezonder zullen zijn.
Show code cell source
# Filter the 'df_c' DataFrame for rows with 'region' value as 'Europe'
df_continent= df[df['region'] == 'Europe']
# Filter the 'df_l' DataFrame for rows with country codes present in 'df_c_europe'
df_continent = df[df['country_code'].isin(df_continent['country_code'])]
# Apply the mask to remove missing or infinite values
filtered_x = df_continent['renewable'][df_continent['total_electricity'] >= 0]
filtered_y = df_continent['GDP_per_capita'][df_continent['total_electricity'] >= 0]
filtered_size = df_continent['total_electricity']*10
filtered_size = filtered_size[filtered_size >= 0]
fig = px.scatter(
df_continent,
x=filtered_x,
y=filtered_y,
trendline='ols',
trendline_color_override="red",
size=abs(np.log10(filtered_size)),
hover_data={
'Hernieuwbare elektriciteit': filtered_x,
'GDP per Capita': filtered_y,
'Country': df_continent['country'][df_continent['total_electricity'] >= 0]
},
)
# Customize the chart layout
fig.update_layout(
title='Rijkdom in landen die hernieuwbare elektriciteit genereren (Europa)',
xaxis_title='Hernieuwbare elektriciteit (%)',
yaxis_title='GDP per Capita (USD)',
width=780,
)
# Show the chart
fig.show()
Figuur 4 (Rijkdom in landen die hernieuwbare elektriciteit genereren (Europa))#
In deze grafiek zie je het BBP per inwoner tegenover het percentage elektriciteit dat duurzaam opgewekt is in alle landen van Europa. Elk punt is een land en je kan over een punt hoveren om informatie te krijgen over het land. De grootte van de punt geeft aan hoeveel elektriciteit een land opwekt. Deze grootte is op logaritmische schaal. De trendlijn gaat omhoog en dat betekent dat er een positieve correlatie zit tussen duurzaam opgewekte elektriciteit en het BBP per inwoner. We hebben ervoor gekozen deze grafiek toe te voegen om een verklaring te kunnen geven waarom landen die meer hernieuwbare elektriciteit opwekken, gezonder zijn.
Show code cell source
# Create the cartogram using Plotly Graph Objects
fig = go.Figure()
skew = 1
colors = px.colors.sequential.Greens
colorscale = [[(i/(len(colors)-1))**(skew),colors[i]] for i in range(len(colors))]
# Add the choropleth trace for colored countries
fig.add_trace(go.Choropleth(
locations=df_continent['country_code'],
z=df_continent['renewable'],
geo='geo',
colorscale=colorscale,
hovertext=[f'{country}<br>Renewable: {renewable:.2f}<br>Life Expectancy: {life_expect:.2f}' for country, renewable, life_expect in zip(df_continent['country'], df_continent['renewable'], df_continent['life_expect'])],
colorbar=dict(
title='Hernieuwbare elektriciteit (%)', # Add a title to the color scale
titleside='top',
tickfont=dict(size=10),
)
))
# Add the scatter trace for black circles representing CO2 per capita
fig.add_trace(go.Scattergeo(
locations=df_continent['country_code'],
marker=dict(
size=(df_continent['life_expect']-65)*0.8,
sizemode='diameter',
color='#2e86d1',
opacity=0.5
),
hovertext=[f'{country}<br>Renewable: {renewable:.2f}<br>Life Expectancy: {life_expect:.2f}' for country, renewable, life_expect in zip(df_continent['country'], df_continent['renewable'], df_continent['life_expect'])],
showlegend=True,
name='Levensverwachting ', # Add a title to the legend
))
# Set the layout and title
fig.update_layout(
title='Hernieuwbare energie en levensverwachting (Europa)',
width=780,
geo=dict(
showframe=False,
showcoastlines=False,
projection_type='natural earth',
scope="europe",
),
legend=dict(
tracegroupgap=10, # Increase the gap between legend groups
x=0, # Set the x-coordinate of the legend
y=-0.1, # Set the y-coordinate of the legend
)
)
# Show the plot
fig.show()
Figuur 5 (Hernieuwbare energie en levensverwachting (Europa))#
In deze grafiek zie je een bubble map van Europa. De kleur laat zien hoeveel hernieuwbare elektriciteit er wordt opgewekt als percentage van de totale opgewekte elektriciteit per land en de grootte van de bubbels laat de levensverwachting zien. Als je hovert over een land, zie je ook de waardes die bij het land horen.
In deze kaart zien we dat over het algemeen landen die een hoger percentage hernieuwbare elektriciteit opwekken een hogere levensverwachting hebben. Dit ondersteunt ons perspectief, omdat een hoge levensverwachting betekent dat de inwoners gezond zijn.
Show code cell source
# Calculate correlation matrix
corr_df = df_continent[['renewable', 'no_renewable','life_expect', 'basic_water', 'age5-19thinness','age5-19obesity', 'age5-19healthyweight']].corr(method='pearson')
corr_df = corr_df.drop(corr_df.columns[[0,1]], axis=1)
# Create a correlation map using Plotly Express
fig = go.Figure(data=go.Heatmap(
z=corr_df.values,
x=['life expectancy', 'basic water', 'age 5-19 thinness','age 5-19 obesity', 'age 5-19 healthy weight'],
y=['renewable', 'non renewable'],
colorscale='rdylgn',
zmin=-1,
zmax=1,
colorbar=dict(
title="Pearson's r",
titleside='top',
tickfont=dict(size=10),
)
))
# Customize the chart layout
fig.update_layout(
title='Correlaties hernieuwbare en niet hernieuwbare energie (Europa)',
width=780,
height=400,
xaxis_showgrid=True,
yaxis_showgrid=True,
xaxis_tickangle=-45
)
# Show the chart
fig.show(renderer=pio.renderers.default)
Figuur 6 (Correlaties hernieuwbare en niet hernieuwbare energie (Europa))#
In deze grafiek zie je een correlatiematrix van hernieuwbare en niet hernieuwbare energie met variabelen die wij belangrijk vinden voor gezondheid. ‘Thinness’ is het percentage van jongeren tussen de 5 en 19 jaar dat ondergewicht heeft, ‘obesity’ is het percentage dat overgewicht heeft en ‘healthy weight’ is het percentage dat een gezond gewicht heeft.
In deze matrix kunnen we zien dat hernieuwbare energie een positieve correlatie heeft met levensverwachting en toegang tot schoon drinkwater. Ook zijn er minder mensen met ondergewicht en minder mensen met overgewicht en dus meer mensen op een gezond gewicht.